package com.zhanghu.backendZray.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhanghu.backendZray.pojo.entity.AlbumCollection;
import com.zhanghu.backendZray.pojo.entity.PendingTask;
import com.zhanghu.backendZray.pojo.request.album.AlbumCollectionPageRequest;
import com.zhanghu.backendZray.pojo.request.album.AlbumCollectionRequest;
import com.zhanghu.backendZray.pojo.request.album.InviteFamilyGroupRequest;
import com.zhanghu.backendZray.pojo.request.album.InviteFamilyResultRequest;
import com.zhanghu.backendZray.pojo.request.user.UserPageRequest;
import com.zhanghu.backendZray.pojo.vo.UserVo;
import com.zhanghu.backendZray.pojo.vo.albumCollection.AlbumCollectionVo;
import com.zhanghu.backendZray.pojo.vo.albumCollection.IntervalPendingTaskVo;
import com.zhanghu.backendZray.pojo.vo.albumCollection.PendingTaskVo;

import java.util.List;

/**
 * <p>
 * 相册合集表 服务类
 * </p>
 *
 * @author zhangdong
 * @since 2024-08-17
 */
public interface AlbumCollectionService extends IService<AlbumCollection> {

    void add(AlbumCollectionRequest request);

    void update(AlbumCollectionRequest request);

    Page<AlbumCollectionVo> page(AlbumCollectionPageRequest request);

    void delete(int id);

    /**
     * 获取合集中的所有文件id集合
     */
    List<Integer> listAllFileId(int id);

    /**
     * 获取合集中的封面文件id
     */
    Integer getPreviewFileId(int id);

    /**
     * 配置封面
     */
    void coverFileSetting(AlbumCollectionRequest albumCollectionRequest);

    /**
     * 配置合集照片
     */
    void fileSetting(AlbumCollectionRequest albumCollectionRequest);

    List<AlbumCollectionVo> listAll();

    void inviteFamilyGroup(InviteFamilyGroupRequest inviteFamilyGroupRequest);

    Page<UserVo> familyGroupPage(UserPageRequest userPageRequest);

    void submitInviteResult(InviteFamilyResultRequest inviteFamilyResultRequest);

    /**
     * 获取指定人员的待办事项
     */
    IntervalPendingTaskVo pendingTaskMesPush(Integer userId);

    List<PendingTaskVo> listAllPendingTaskTodo();

    /**
     * 单个待办事项组装
     */
    IntervalPendingTaskVo pendingTaskVoWrapper(PendingTask task);
}
